home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qlib205.zip / QLIB.ZIP / SRC / QLIB / STRN.ASM < prev    next >
Assembly Source File  |  1997-01-09  |  2KB  |  133 lines

  1. include qlib.inc  ;setup
  2. include dos.inc
  3. include string.inc
  4. include alloc.inc
  5.  
  6. .code
  7. strncpy proc,s1off:dword,s2off:dword,siz:dword
  8.   ;s1=s2
  9.   pushad
  10.   mov edi,s1off
  11.   mov esi,s2off
  12.   callp strlen,esi
  13.   .if eax>=siz
  14.     mov ecx,siz
  15.     rep movsb
  16.   .else
  17.     mov ecx,eax
  18.     rep movsb
  19.     mov ecx,siz
  20.     sub ecx,eax
  21.     mov al,0
  22.     rep stosb
  23.   .endif
  24.   popad
  25.   mov eax,s1off
  26.   ret
  27. strncpy endp
  28.  
  29. strncat proc,s1off:dword,s2off:dword,siz:dword
  30.   ;s1=s1+s2
  31.   pushad
  32.   mov edi,s1off
  33.   mov esi,s2off
  34.   callp strlen,esi
  35.   mov ecx,eax
  36.   .if ecx>siz
  37.     mov ecx,siz
  38.   .endif
  39.   callp strlen,edi
  40.   add edi,eax
  41.   rep movsb
  42.   mov al,0
  43.   stosb
  44.   popad
  45.   mov eax,s1off
  46.   ret
  47. strncat endp
  48.  
  49. strncmp proc,p1:dword,p2:dword,siz:dword
  50.   pushad
  51.   mov esi,p1
  52.   mov edi,p2
  53.   mov ecx,siz
  54. @@:
  55.   .if !ecx
  56.     popad
  57.     xor eax,eax
  58.     ret
  59.   .endif
  60.   cmpsb
  61.   ja above
  62.   jb below
  63.   dec ecx
  64.   cmp byte ptr[esi-1],0
  65.   jnz @b
  66.   popad
  67.   xor eax,eax
  68.   ret
  69. above:
  70.   popad
  71.   mov eax,1   ;p1 > p2
  72.   ret
  73. below:
  74.   popad
  75.   mov eax,-1    ;p1 < p2
  76.   ret
  77. strncmp endp
  78.  
  79. strnset proc uses edi ecx,s1:dword,c1:byte,siz:dword
  80.   mov edi,s1
  81.   callp strlen,edi
  82.   mov ecx,eax
  83.   .if ecx>siz
  84.     mov ecx,siz
  85.   .endif
  86.   mov al,c1
  87.   rep stosb
  88.   mov eax,s1
  89.   ret
  90. strnset endp
  91.  
  92. strnicmp proc,s1:dword,s2:dword,siz:dword
  93.   pushad
  94.   mov esi,s1
  95.   mov edi,s2
  96.   mov ecx,siz
  97. @@:
  98.   .if !ecx
  99.     popad
  100.     xor eax,eax
  101.     ret
  102.   .endif
  103.   lodsb
  104.   .if (al>='a') && (al<='z')
  105.     add al,'A'-'a'
  106.   .endif
  107.   mov bl,al
  108.   mov al,[edi]
  109.   inc edi
  110.   .if (al>='a') && (al<='z')
  111.     add al,'A'-'a'
  112.   .endif
  113.   cmp bl,al
  114.   ja above
  115.   jb below
  116.   dec ecx
  117.   cmp byte ptr[esi-1],0
  118.   jnz @b
  119.   popad
  120.   xor eax,eax
  121.   ret
  122. above:
  123.   popad
  124.   mov eax,1   ;p1 > p2
  125.   ret
  126. below:
  127.   popad
  128.   mov eax,-1    ;p1 < p2
  129.   ret
  130. strnicmp endp
  131.  
  132. end
  133.